const JWT = require('jsonwebtoken');

module.exports = options => {
  return async function(ctx, next) {
    // 拿到传会数据的header 中的token值
    const token = ctx.request.header.token;
    // 后台管理系统才验证登录信息
    if(ctx.path.indexOf('/sys/') > -1) {
        if(!token) {
            if(ctx.path === '/sys/login') {
                await next();
            } else {
                ctx.throw(401, '未登录，请先登录');
            }
        } else {
            let decode;
            try {
                // 验证当前token
                decode = JWT.verify(token, options.secret);
                if (!decode || !decode.userName) {
                    ctx.throw(401, '没有权限，请登录');
                }
                if (Date.now() - decode.expire > 0) {
                    ctx.throw(401, 'Token已过期');
                }
                const user = decode.userName === 'root';
                // const user = await ctx.model.User.find({
                //     username: decode.username,
                // });
                if (user) {
                    await next();
                } else {
                    ctx.throw('401', '用户信息验证失败');
                }
            } catch (e) {
                console.log(e);
            }
        }
    } else {
        await next();
    }
  };
};